#include "user.h"
#include "ui_user.h"
#include "mainwindow.h"
#include "login.h"

user::user(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::user)
{
    ui->setupUi(this);
    p=parent;
    //设置表格的列数
    ui->tableWidget->setColumnCount(4);

    //设置列宽
    ui->tableWidget->setColumnWidth(0,120);
    ui->tableWidget->setColumnWidth(1,120);
    ui->tableWidget->setColumnWidth(2,120);
    ui->tableWidget->setColumnWidth(3,120);
    //设置表格字段名
    ui->tableWidget->setHorizontalHeaderLabels(QStringList()<<"车牌"<<"停车时间"<<"车费"<<"车位");

    //设置表格的行数
    ui->tableWidget->setRowCount(10);
    //安装数据库的驱动
    /*
        注意：如果你的QT程序，需要使用多个数据库文件(.db)，此时安装驱动的时候，必须传递第二个参数(连接名)来区分不同的数据库文件
    */
    base=QSqlDatabase::addDatabase("QSQLITE","hello");


    //设置数据库的路径名
    base.setDatabaseName("C:/嵌入式/c语言练习/.vscode/sqlite-autoconf-3470000/sqlite-autoconf-3470000/1.db");


    //打开数据库
    bool ret=base.open();
    if(!ret)
    {
        qDebug()<<"打开数据库失败了,失败的原因: "<<base.lastError().text();
        return;
    }

    //新建一个表格
    QSqlQuery query(base);
    ret=query.exec("create table if not exists parksystem (num unique,time text,price text,side text);");
    if(!ret)
    {
        qDebug()<<"新建停车表格失败了,失败的原因: "<<query.lastError().text();
        return;
    }
}

user::~user()
{
    base.close();
    delete ui;
}

//新建书籍信息
void user::on_pushButton_clicked()
{
    bool ret;
    //获取你输入的书籍信息
    QString num=ui->numle->text();
    QString time=ui->timele->text();
    QString price=ui->pricele->text();
    QString side=ui->sidele->text();


    //拼接得到插入语句
    QString cmd=QString("insert into parksystem values ('%1','%2','%3','%4');").arg(num).arg(time).arg(price).arg(side);
    //执行插入语句
    QSqlQuery query(base);
    ret=query.exec(cmd);
    if(!ret)
    {
        qDebug()<<"插入停车信息失败了,失败的原因: "<<query.lastError().text();
        return;
    }
}
//删除书籍信息
void user::on_pushButton_2_clicked()
{
    bool ret;
    //获取要删除的车牌名字
    QString delname=ui->delnamele->text();

    //拼接得到删除语句
    QString cmd=QString("delete from parksystem where num='%1';").arg(delname);
    //执行删除语句
    QSqlQuery query(base);
    ret=query.exec(cmd);
    if(!ret)
    {
        qDebug()<<"删除停车信息失败了,失败的原因: "<<query.lastError().text();
        return;
    }
}
//修改书籍信息
void user::on_pushButton_3_clicked()
{
    bool ret;
    //获取要旧的书籍名字
    QString oldname=ui->oldnamele->text();
    //获取新的价格
    QString oldtime=ui->oldtime->text();
    //获取要旧的书籍名字
    QString oldprice=ui->oldprice->text();
    //获取新的价格
    QString oldside=ui->oldside->text();

    //拼接得到修改语句
    QString cmd=QString("update parksystem set time='%1',price='%2',side='%3' where num='%4';").arg(oldtime).arg(oldprice).arg(oldside).arg(oldname);
    //执行修改语句
    QSqlQuery query(base);
    ret=query.exec(cmd);
    if(!ret)
    {
        qDebug()<<"修改书籍信息失败了,失败的原因: "<<query.lastError().text();
        return;
    }
}
//查询书籍信息
void user::on_pushButton_4_clicked()
{
    bool ret;
    int i=0,j;
    //执行查询语句
    QSqlQuery query(base);
    ret=query.exec("select * from parksystem;");
    if(!ret)
    {
        qDebug()<<"查询书籍信息失败了,失败的原因: "<<query.lastError().text();
        return;
    }

    //获取查询的结果
    /*
        next方法：如果查询结果遍历完毕，返回假
        value方法：通过字段索引号，得到字段信息
        QVariant类是QT中万能类型
            QVariant可以通过toxxx方法，转换成生活中常见的类型
            QVariant可以通过构造函数，把生活中常见的类型，转成QVariant类型
    */
    //把表格列表框清空
    ui->tableWidget->clear(); //会把字段名也清空
    //设置表格字段名
    ui->tableWidget->setHorizontalHeaderLabels(QStringList()<<"车牌"<<"停车时间"<<"车费"<<"车位");

    while(query.next())
    {
        //打印查询的结果
        //        qDebug()<<"书名: "<<query.value(0).toString();
        //        qDebug()<<"作者: "<<query.value(1).toString();
        //        qDebug()<<"价格: "<<query.value(2).toFloat();

        //        qDebug()<<"书名: "<<query.value("name").toString();
        //        qDebug()<<"作者: "<<query.value("author").toString();
        //        qDebug()<<"价格: "<<query.value("price").toFloat();

        //把查询的结果在表格列表框中显示出来
        for(j=0; j<4; j++)
        {
            QString str=query.value(j).toString();
            QTableWidgetItem *item=new QTableWidgetItem(str);
            ui->tableWidget->setItem(i,j,item);
        }
        i++;
    }
}



void user::on_pushButton_5_clicked()
{
    //把登录界面显示出来
    p->show();
    //关闭掉主界面
    delete this;  //this->close();
}
